#19 №46977
#p1 - ход предыдущего игрока
#p2 - наш предыдущий ход
def f(s, p1,p2, c,m):
    if s>=21: return c%2 == m%2
    if c==m: return 0

    h = []
    if p2 != '+1': h.append(f(s+1,'+1',p1,c+1,m))
    if p2 != '+2': h.append(f(s + 2,'+2',p1, c + 1, m))
    if p2 != '*2': h.append(f(s*2,'*2',p1, c+1,m))
    return any(h) if (c+1)%2 == m%2 else all(h)

for s in range(1,21):#петя выигрывает  третьего хода
    for m in range(1,5):
        if f(s,'','',0,m):
            if m==3:
                print(s, m)
                break
    #print()
# ответ 8
----------------------------------------
#20 №46978
#p1 - ход предыдущего игрока
#p2 - наш предыдущий ход
def f(s, p1,p2, c,m):
    if s>=21: return c%2 == m%2
    if c==m: return 0

    h = []
    if p2 != '+1': h.append(f(s+1,'+1',p1,c+1,m))
    if p2 != '+2': h.append(f(s + 2,'+2',p1, c + 1, m))
    if p2 != '*2': h.append(f(s*2,'*2',p1, c+1,m))
    return any(h) if (c+1)%2 == m%2 else all(h)

for s in range(1,21):#петя выигрывает  третьего хода
    for m in range(1,5):
        if f(s,'','',0,m):
            if m==4 or m==2:
                print(s, m)
                #break
    #print()
# ответ 6 7
--------------------------------------
#21 №46979
#p1 - ход предыдущего игрока
#p2 - наш предыдущий ход
def f(s, p1,p2, c,m):
    if s>=21: return c%2 == m%2
    if c==m: return 0

    h = []
    if p2 != '+1': h.append(f(s+1,'+1',p1,c+1,m))
    if p2 != '+2': h.append(f(s + 2,'+2',p1, c + 1, m))
    if p2 != '*2': h.append(f(s*2,'*2',p1, c+1,m))
    return any(h) if (c+1)%2 == m%2 else all(h)

for s in range(1,21):#петя выигрывает  третьего хода
    for m in range(1,6):
        if f(s,'','',0,m):
            if m==5 or m==3 or m==1:
                print(s, m)
                #break
    #print()
# ответ 5